package com.gtw.modules.dao;

import com.baomidou.mybatisplus.plugins.Page;
import com.gtw.dto.TbOrderDto;
import com.gtw.modules.entity.TbOrder;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 订单
 *
 * @author wuye
 */
@Mapper
@Repository
public interface TbOrderDao extends BaseDao<TbOrder> {

    int deleteByPrimaryKey(Integer id);

    int insert(TbOrder record);

    int insertSelective(TbOrder record);

    TbOrder selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(TbOrder record);

    int updateByPrimaryKey(TbOrder record);

    List<TbOrder> queryPageList(Page<TbOrder> pageUtil, Map<String, Object> map);

    /**
     * 根据订单号查询订单
     *
     * @param billno
     * @return
     */
    TbOrder queryBybillno(String billno);

    /**
     * 根据订单号查询订单
     *
     * @param billno
     * @return
     */
    TbOrder queryInfo(@Param("uid") String uid, @Param("billno") String billno,@Param("orderstatus") String orderstatus);

    /**
     * 根据订单号\商品ID 活动ID查询订单
     *
     * @return
     */
    TbOrder queryInfoByBargain(@Param("uid") String uid, @Param("commodityid") String commodityid,@Param("aid") String aid);

    /**
     * 根据用户UID查询订单
     * @param uid
     * @return
     */
    List<TbOrder> queryByUid(String uid);

    List<TbOrder> foundByEnd();

    List<TbOrder> foundByEndWeek();

    List<TbOrder> queryByPorxyid(Integer proxyid);

    /**
     * 查询这个时间之后的订单,且参与活动,未支付
     * @param startTime
     * @return
     */
    List<TbOrder> findActiveOrderByTime(Date startTime);

    /**
     * 查询订单列表,关联地址信息
     *
     * @param orderstatus 订单状态
     * @param starttime   开始时间
     * @return
     */
    List<TbOrderDto> queryListLinkAddress(@Param("orderstatus") String orderstatus,@Param("starttime") Date starttime);
}